#ifndef _TEXTURE_ATLAS_ASSET_H_
#define _TEXTURE_ATLAS_ASSET_H_

#include "Asset.h"
#include <graphics.h>
#include <vector>
#include <cwchar>
// 纹理图集资源类
class TextureAtlasAsset : public Asset
{
public:
    // 构造函数，path_template应包含一个%d占位符,如果没有占位符，会切割整张图片形成frameCount张动画帧
    TextureAtlasAsset(const std::string& id, const std::wstring& pathTemplate, int frameCount);
    //TextureAtlasAsset();
    virtual ~TextureAtlasAsset();

    // 实现Asset基类接口
    virtual bool Load() override;
    virtual void Unload() override;

    // 获取帧数
    int GetFrameCount() const { return static_cast<int>(m_frames.size()); }

    // 获取指定帧图像
    IMAGE* GetFrame(int index) const;

    // 添加帧
    void AddFrame(const IMAGE& image);

    // 水平翻转整个图集并返回新的图集
    std::shared_ptr<TextureAtlasAsset> CreateFlipped(const std::string& newId) const;

private:
    std::wstring m_pathTemplate;
    int m_frameCount;
    std::vector<IMAGE*> m_frames;
};

#endif // !_TEXTURE_ATLAS_ASSET_H_